git 本地 push 后服务器自动 pull
会遇到的问题
- git 后台
webhooks
的设置 - 回调地址中 shell 的编写
- 执行回调地址用户的问题
php-fpm.conf
里的引入文件www.conf
的用户设置linux
系统中指定用户免sudo
设置- 执行接口遇到的坑等。
下面我一一讲解。
一、设置WebHooks
进入 Git 管理后台找到 WebHooks
把回调的网址设置进去。
二、服务器上设置
1. 查看 php 进程的用户名
ps -ef | grep php
2. 修改php配置文件
添加用户组
/usr/sbin/groupadd 用户组名
新增用户
/usr/sbin/useradd -g 用户组名 -s /bin/bash 用户名
修改 php 配置
vim /etc/php-fpm.d/www.conf
我的是在 /etc/php-fpm.d/www.conf
,修改最上面的 user
和 group
3. 重启php
service php-fpm restart
4. 改变免密码执行 sudo
visudo
在 root ALL=(ALL) ALL
下面加上
用户组 ALL=(ALL) NOPASSWD: ALL
三、PHP 中的脚本
// 自动去拉取代码
public function index(Request $request)
{
//查看登录的用户
echo shell_exec("id -a");
//执行的命令
$shell = "cd /data/www/yiqicefu/ && git pull http://jojopan:panjojo0808@gitee.com/tyunai/yiqicefu.git 2<&1";
system($shell, $status);
//注意shell命令的执行结果和执行返回的状态值的对 应关系
$shell = "<font color='red'>$shell</font>";
if( $status ){
echo "shell命令{$shell}执行失败";
} else {
echo "shell命令{$shell}成功执行";
}
}
拉取的命令
git pull https://用户名:密码@gitee.com/tyunai/yiqicefu.git
因为在linux系统里切换用户,免输入用户密码后,在网页上拉取还是失败,所以用了这个命令。
gitee.com/tyunai/yiqicefu.git
是git的https地址
补充
其他命令
查看 git 库的地址
git remote -v
指定 git 地址
git remote set-url origin 后面跟地址